//  给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串的长度

// 思路，滑动窗口，双指针，left和right，用一个map记录left和right之间元素出现的次数，当right出现大于1时，左移left直到right小于等于1
// 更新结果
// 时间复杂度：O(n)
// 空间复杂度：O(字符集的大小)

function lengthOfLongestSubstring(arr) {
    let ans = 0
    let left = 0
    let right = 0
    let map = new Map
    while (right < arr.length) {
        if (!map.has(arr[right])) {
            map.set(arr[right], 1)
        } else {
            map.set(arr[right], map.get(arr[right]) + 1)
        }
        while (map.get(arr[right]) > 1) {
            map.set(arr[left], map.get(arr[left]) - 1)
            left++
        }
        ans = Math.max(right - left + 1, ans)
        right++
    }
    return ans
}

let str = "abcaacbb"
console.log(lengthOfLongestSubstring(str))